types of cryptanalysis